package com.bilibili.innerclass;

import java.util.Arrays;
import java.util.Comparator;

//内部类  完成给数组排序，理解其中内部类的用法
public class innerclass {
    public static void main(String[] args) {
        Student[] students = new Student[6];
        students[0] = new Student("bro1", 20, 173, '男');
        students[1] = new Student("gir1", 23, 168, '女');
        students[2] = new Student("gir2", 24, 172, '女');
        students[3] = new Student("bro2", 22, 180, '男');
        students[4] = new Student("gir3", 21, 165, '女');
        students[5] = new Student("gir4", 25, 166, '女');


//需求:按钮年龄升序排序。可以调用sun公司写好的API直接对数组进行排序。
// public static void sort(T[] a,Comparator<T> c)
//              参数一:需要排序的数组
//              参数二:需要给sort声明一个Comparator比较器对象（指定排序的规则)
//sort方法内部会调用匿名内部类对象的compare方法，对数组中的学生对象进行两两比较，从而实现排序。


        Arrays.sort(students, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
            //指定排序规则:
                // 如果你认为左边对象大于右边对象那么返回正整数。
                //如果你认为左边对象小于右边对象那么返回负整数。
                // 如果两边相等那么返回0。
//                if (o1.getAge() > o2.getAge()) {
//                    return 1;
//                }else if(o1.getAge() < o2.getAge()){
//                    return -1;
//                }
//                return 0;
                return o1.getAge()-o2.getAge();
            }
        });

        for (int i = 0; i < students.length; i++) {
            Student s = students[i];
            //System.out.println(s);
            System.out.println(s.getName()+"\t"+s.getSex()+"\t"+s.getAge()+"\t"+s.getHight());
        }
    }
}
